package com.yunke.vo.dazi;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 云科搭子详情VO
 * 
 * @author yunke
 * @since 2024-01-01
 */
@Data
@Schema(description = "搭子详情信息")
public class YunkeDaziDetailVo {

    /**
     * 搭子ID
     */
    @Schema(description = "搭子ID")
    private Long id;

    /**
     * 发布者用户ID
     */
    @Schema(description = "发布者用户ID")
    private Long userId;

    /**
     * 发布者信息
     */
    @Schema(description = "发布者信息")
    private PublisherInfo publisherInfo;

    /**
     * 分类ID
     */
    @Schema(description = "分类ID")
    private Long tabClassId;

    /**
     * 分类名称
     */
    @Schema(description = "分类名称")
    private String tabClassName;

    /**
     * 标题
     */
    @Schema(description = "搭子标题")
    private String title;

    /**
     * 内容描述
     */
    @Schema(description = "搭子内容描述")
    private String content;

    /**
     * 图片列表
     */
    @Schema(description = "图片列表")
    private List<String> images;

    /**
     * 活动地点
     */
    @Schema(description = "活动地点")
    private String location;

    /**
     * 详细地址
     */
    @Schema(description = "详细地址")
    private String address;

    /**
     * 经度
     */
    @Schema(description = "经度")
    private String longitude;

    /**
     * 纬度
     */
    @Schema(description = "纬度")
    private String latitude;

    /**
     * 需要人数
     */
    @Schema(description = "需要人数")
    private Integer needPeople;

    /**
     * 已加入人数
     */
    @Schema(description = "已加入人数")
    private Integer joinedPeople;

    /**
     * 活动时间
     */
    @Schema(description = "活动时间")
    private Long activityTime;

    /**
     * 报名截止时间
     */
    @Schema(description = "报名截止时间")
    private Long deadlineTime;

    /**
     * 费用说明
     */
    @Schema(description = "费用说明")
    private String costDesc;

    /**
     * 联系方式
     */
    @Schema(description = "联系方式")
    private String contact;

    /**
     * 是否需要审核 0-否 1-是
     */
    @Schema(description = "是否需要审核 0-否 1-是")
    private Integer needAudit;

    /**
     * 性别要求 0-不限 1-男 2-女
     */
    @Schema(description = "性别要求 0-不限 1-男 2-女")
    private Integer genderLimit;

    /**
     * 年龄要求最小值
     */
    @Schema(description = "年龄要求最小值")
    private Integer ageMin;

    /**
     * 年龄要求最大值
     */
    @Schema(description = "年龄要求最大值")
    private Integer ageMax;

    /**
     * 状态 0-草稿 1-已发布 2-进行中 3-已完成 4-已取消
     */
    @Schema(description = "状态 0-草稿 1-已发布 2-进行中 3-已完成 4-已取消")
    private Integer status;

    /**
     * 审核状态 0-待审核 1-审核通过 2-审核拒绝
     */
    @Schema(description = "审核状态 0-待审核 1-审核通过 2-审核拒绝")
    private Integer auditStatus;

    /**
     * 是否置顶 0-否 1-是
     */
    @Schema(description = "是否置顶 0-否 1-是")
    private Integer isTop;

    /**
     * 浏览次数
     */
    @Schema(description = "浏览次数")
    private Integer viewCount;

    /**
     * 点赞次数
     */
    @Schema(description = "点赞次数")
    private Integer likeCount;

    /**
     * 评论次数
     */
    @Schema(description = "评论次数")
    private Integer commentCount;

    /**
     * 分享次数
     */
    @Schema(description = "分享次数")
    private Integer shareCount;

    /**
     * 发布时间
     */
    @Schema(description = "发布时间")
    private Long publishTime;

    /**
     * 当前用户是否已参与 0-否 1-是
     */
    @Schema(description = "当前用户是否已参与 0-否 1-是")
    private Integer isJoined;

    /**
     * 当前用户参与状态 0-待审核 1-已通过 2-已拒绝 3-已退出
     */
    @Schema(description = "当前用户参与状态 0-待审核 1-已通过 2-已拒绝 3-已退出")
    private Integer joinStatus;

    /**
     * 是否可以参与
     */
    @Schema(description = "是否可以参与")
    private Boolean canJoin;

    /**
     * 参与成员列表
     */
    @Schema(description = "参与成员列表")
    private List<JoinMemberInfo> joinMembers;

    /**
     * 发布者信息内部类
     */
    @Data
    @Schema(description = "发布者信息")
    public static class PublisherInfo {
        @Schema(description = "用户ID")
        private Long userId;
        @Schema(description = "用户名")
        private String username;
        @Schema(description = "昵称")
        private String nickname;
        @Schema(description = "头像")
        private String avatar;
        @Schema(description = "性别")
        private Integer gender;
        @Schema(description = "年龄")
        private Integer age;
        @Schema(description = "VIP等级")
        private Integer vipLevel;
        @Schema(description = "是否认证")
        private Integer isAuth;
    }

    /**
     * 参与成员信息内部类
     */
    @Data
    @Schema(description = "参与成员信息")
    public static class JoinMemberInfo {
        @Schema(description = "用户ID")
        private Long userId;
        @Schema(description = "用户名")
        private String username;
        @Schema(description = "昵称")
        private String nickname;
        @Schema(description = "头像")
        private String avatar;
        @Schema(description = "性别")
        private Integer gender;
        @Schema(description = "年龄")
        private Integer age;
        @Schema(description = "参与状态")
        private Integer status;
        @Schema(description = "加入时间")
        private Long joinTime;
        @Schema(description = "是否是发布者")
        private Integer isPublisher;
    }
} 